地图编辑概述

最后更新时间:2019年7月5日

功能介绍

功能概述

我们正处于信息化时代,每时每刻都在产生、表达地理信息。据统计,目前地理信息已占到了人类活动所涉及信息总量的80%,并且地理信息变化很快。因此,想要很好的管理地理信息,就必须保证空间数据的有效性,那么对地理信息的采集和更新就尤为重要。

现在主流的移动设备无论手机还是平板电脑,均具备无线网络、GPS定位、摄像头等模块,这使得数据采集和更新可以不受时空地域的限制,实时传输数据。此外,移动GIS又结合电子地图,既节约了纸质地图的成本,又提高了数据的精度、质量、可用行和复用率,使用移动GIS进行数据的采集和更新越来越受到大众的青睐。

正是由于具有实际的需求,地图编辑成为移动GIS平台的核心功能之一,MapGIS Mobile开发平台为用户提供了灵活的离在线一体化地图编辑功能,可以满足移动端各类应用需求,具体包括以下三类:

0001地图编辑.jpg

应用场景

首先来了解地图要素编辑功能,其他两个模块在后续开发指南中会进行讲解。地图数据要素编辑,包括要素对象的增、删、改,即要素图形样式信息、几何信息、属性信息的编辑,广泛应用于数据采集相关项目,以及数据更新维护等应用场景。

要素编辑.png 要素编辑.png 要素编辑.png

地图要素编辑可以按照数据类型、要素类型、操作类型三种方法进行分类:

地图要素编辑分类.png

功能介绍
1
离线要素编辑

开发者可通过该功能,实现对离线模式的二维地图要素(点、线、区、注记)的添、删、改编辑功能。

2
在线要素编辑

开发者可通过该功能,实现对在线模式的二维地图要素(点、线、区、注记)的添、删、改编辑功能。

3
交互式地图编辑

开发者可通过该功能,基于草图编辑器(SketchEditor)实现移动端交互式地图要素编辑。

要素结构

地图要素是地图的基本单位,表示地图上具有位置、分布特点和相互关系的地理实体。如:一个城市的的建筑物可以用点要素表示,道路、河流可以用线要素表示,行政区、居民区可以用区要素表示。

地图要素结构包含三个部分,分别为几何信息,属性信息和图形信息,每部分都具有其独有的信息,共同组成完整的地图要素。

功能接口

MapGIS Mobile SDK为离线、在线地图要素的编辑封装了统一的接口,核心类为要素编辑类MGSFeatureEdit。通过MGSFeatureEdit不同的构造函数来进行不同类型地图数据的操作。通过MGSFeatureEdit的append、delete、update方法实现要素的增、删、改。

接口 适用情况
append: 添加要素
deleteWithID: 删除要素
update:ID: 更新要素

离线、在线地图要素编辑功能使用同一套接口,区别在于根据数据类型不同,选择MGSFeatureEdit类不同的构造函数来构造对象。MGSFeatureEdit提供了4个构造函数,如下:

接口 适用情况 接口
initWithVectorLayer: 离线 通过矢量图层构造编辑对象。
离线数据常用的方法。
initWithIVectorCls: 离线 通过矢量类对象构造编辑对象。
通常只提供.db数据库时,采用此方法。
initWithIGServerBaseURL:dataURL: 在线 方便获取在线图层数据的URL地址时采用此方法。
initWithIGServerBaseURL:docName:mapID:layer: 在线 方便获取到在线图层数据在地图文档中的ID时,采用此方法。

下面通过示例展示四种构造函数的用法:

(1) 通过矢量图层构造要素编辑对象

//获取矢量图层
MGSVectorLayer *vectorLayer = (MGSVectorLayer *)[_mapView.map getLayerAtIndex:8];
//构造要素编辑对象
MGSFeatureEdit *featureEdit=[[MGSFeatureEdit alloc] initWithVectorLayer:vectorLayer];

(2) 通过矢量类构造要素编辑对象

//构造数据库对象
MGSDataBase *dataBase=[[MGSDataBase alloc] init];
//.mgdb数据库离线本地路径
NSString *dbPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:@"/MapGIS Mobile 2D Sample/Map/MapEdit/武汉MKT.mgdb"];
//打开数据库
[dataBase open:dbPath];
//通过数据库初始化简单要素类
MGSSFeatureCls *featureCls=[[MGSSFeatureCls alloc] initWithDataBase:dataBase];
//打开要素图层
[featureCls openWithID:9];//从1开始
//构造要素编辑对象
MGSFeatureEdit *featureEdit=[[MGSFeatureEdit alloc] initWithIVectorCls:featureCls];

(3) 根据在线图层的URL构造要素编辑对象

//根据服务基地址、图层URL构造要素编辑对象
MGSFeatureEdit *featureEdit=[[MGSFeatureEdit alloc] initWithIGServerBaseURL:@"http://develop.smaryun.com:6163/igs" dataURL:@"gdbp://MapGisLocal/武汉MKT/sfcls/自绘点"];

(4) 根据在线图层的ID构造要素编辑对象

//根据服务基地址、地图文档名称、地图索引、图层索引构造要素编辑对象
MGSFeatureEdit *featureEdit=[[MGSFeatureEdit alloc] initWithIGServerBaseURL:@"http://develop.smaryun.com:6163/igs" docName:@"WuHanEdit" mapID:0 layer:8];